1.1加载环境和批量加载R包

## good habit:  4451-5000
{r}rm(list=ls())
## set working directory
setwd("C:/Users/admin/Desktop")
##批量加载R包
pkges <- c('raster','rgdal',"raster","rgdal","maps", "mapdata","dismo","rJava","maptools","jsonlite")
lapply(pkges,library,character.only=TRUE)

## 查看当前R的工作环境,以便分享代码:
sessionInfo()

## 保存路径中的相对变量,并加载,使用load函数和save函数;
save(xx,file="C:/HH.rda") ## 有一点局限性是需要保存指定变量名,当变量名非常多的时候可能不太好用;或者某些变量,不是数值型可能不方便使用;
load(file = "C:/HH.rda")

## 解决部分shiny应用无法运行的问题:
在shiny应用运行之前运行以下代码:
options(encoding = 'UTF-8')

1.2批量安装未安装成功的R包

packages_needed <- c("raster", # for raster analysis
                     "dismo", # a collection of ENM/SDM tools
                     "rgeos","rgdal","sp", # spatial data analysis
                     "ENMeval", # a few new tools in ENM/SDM
                     "wallace",   # interface for Maxent and ENMeval
                     "utils", # for zip & unzip files
                     "jsonlite" # necessary for download data from GBIF
)
pk_to_install <- packages_needed [!( packages_needed %in% rownames(installed.packages())  )]
if(length(pk_to_install)>0 ){
  install.packages(pk_to_install,repos="http://cran.r-project.org")
}

## 简写代码2:
pkgtest <- function(x){
  if(x %in% rownames(installed.packages()) == FALSE){
    install.packages(x,dependencies = TRUE)
  }
  library(x,character.only = TRUE)

}
needpackages <- c("raster","rgdal")
for(package in neededpackages){pkgtest(package)}


library(pacman)
p_load(sp,raster,rgeos,rgdal,rasterVis,raster,fs,sf,tidyverse)

1.3 常用文件管理代码

设置工作目录保证数据结果的有效性使用;
设置工作目录时要保证保留原始数据(raw_data_xiz)和更改数据(cg_data_xiz1),保证每一步都有确切的数据支持;
补充:
## 创建code文件夹:
if(!file.exists("code")) dir.create("code")

# 创建并写入数据到文件A.txt和B.txt
cat("file A\n", file = "A.txt")

#新建tmp文件夹,并拷贝A.txt和B.txt到tmp文件夹下
dir.create("tmp")
file.copy(c("A.txt", "B.txt"), "tmp")

#删除tmp文件夹,并删除里面的内容,当recursive = TRUE;
unlink("tmp", recursive = TRUE)

#修改文件名C.txt为D.txt
file.rename("C.txt", "D.txt")

#读取bin目录下所有文件及目录(包含全路径)
df <- dir(file.path(R.home(), "bin"), full.names = TRUE)
#返回当前目录下所有文件及目录的信息
file.info(list.files())

#返回当前目录下所有文件的最近一次修改时间
file.mtime(list.files())
file.info(list.files())$mtime

#返回当前目录下所有文件的大小,目录size返回为0
file.size(list.files(()))
file.info(list.files())$size

## 查看当前目录及删除文件
list.files( ): 查看当前目录下文件;

## 复制文件

file.copy用于

file.copy(from, to, overwrite = recursive, recursive = FALSE,
          copy.mode = TRUE, copy.date = FALSE)
from是原始文件(目录)名,to是新文件(目录)名,二者可以是vector,但是长度需相同;

overwrite 若为TRUE,则文件被覆盖;

recursive 复制目录时recursive需为TRUE;

copy.mode若为TRUE,permission bits一并复制过来;

copy.date若为TRUE,文件日期一并复制过来。

## 删除
函数unlink可以用来删除文件或目录,函数file.remove可以用来删除文件。

1.4 注释代码

##注释diamante对于构建niche model非常重要,因为workflow需要构建完整、有序、可评阅的逻辑代码段;
## 1、R运行代码的注释:快捷键:ctrl+shift+c
使用方法是代码或则代码注释写完后,选中,使用快捷键注释;
## 2、R运行代码段的注释:
###2.1 使用快捷键快速折叠代码:alt+L。可自行修改,作者改为ctrl+e
###2.2 使用####aaa#### 或者 ## aaa ----的代码折叠方式,折叠代码段;

1.5 R版本升级迁移R包

#启动当前版本,输入以下命令
oldip <- installed.packages()[,1]
save(oldip, file="installedPackages.Rdata")
#卸载旧版本
#下载安装新版本,启动新版本输入以下命令
load("installedPackages.Rdata")
newip <- installed.packages()[,1]
for(i in setdiff(oldip, newip)) install.packages(i)

1.6 改变R 的临时缓冲目录

## 因为在构建模型过程中会涉及大量的rep,而部分R包的优化效果并不好,会产生局量 的临时缓存文件,但C盘往往是不够的;因此需要改变系统的临时缓冲文件到其他盘;
## 网络上检索到的各种办法都不能实际解决临时缓冲文件的问题:
## 解决办法是在对应版本的R文件下:
## 如:创建一个名为:Renviron.site的文件:
(例如C:\ Program Files \ R \ R-3.3.2 \ etc)
## 创建后的文件,用notepad++打开:
## E:/rtemp 为临时文件缓冲路径:实测有效!!
TMPDIR=E:/rtemp 
TMP=E:/rtemp 
TEMP=E:/rtemp

1.7 杂项

## 工作代码计时
start <-proc.time()
proc.time()-start
## 关闭警告
## 用Rmarkdown输出结果时关闭警告是非常重要的!
## 所有R包的集合CARN 
https://cran.r-project.org/src/contrib/Archive/
## 默认加载R包
从R的安装目录的etc目录下找到Rprofile.site文件(例如R-2.15.0\etc\Rprofile.site),用记事本打开,在这个文件最后添加一行:
options(defaultPackages=c(getOption("defaultPackages"), "foreign", "survival"))
把"foreign", "survival"改成你需要自动加载的包就行了

1.8 R包安装的各种报错汇总

##关于github和R的运行关系:
# 参见这本书:
Happy Git and GitHub for the useR
## 书籍详细介绍了一些关于使用github和R调用时的报错问题;
## 数据链接:
https://happygitwithr.com/
在使用github客户端提交代码时,报错
failed to receive handshake ssl/tls connection failed
## 解决方法:
# 任意位置git-bush:
$ git config --global http.sslBackend "openssl"
$ git config --global http.sslCAInfo [path to .pem file]
报错解决]Error in nchar(object, type = "chars") : invalid multibyte string, element 1
## 解决方法:
在R的窗口上运行Sys.setlocale(category = "LC_ALL", locale = "us")即可解决
# 关于一个非常复杂的报错:
Error: Failed to install 'unknown package' from GitHub: HTTP error 401. Bad
## 解决办法:
## 先利用:
# R中打开:
usethis::browse_github_pat()
# 网页端打开github:R:GITHUB_PAT=nicheer124499
# R打开:
usethis::edit_r_environ()
这会打开一个环境页,将刚才设置的R.GITHUB_PAT=gouzahndang123 粘贴复制上 然后保存,重启R就可以了。注意剪切上去的形式不是和上面的一致:需要:
GITHUB_PAT=gouzahndang123(等价的秘钥)
然后打开还会持续报错;
## 在git中使用:
$ git config --global http.sslBackend "openssl"
git config --global http.sslCAInfo D:/bclang/R-4.0.2/library/openssl/cacert.pem
之后,使用
> Sys.getenv("GITHUB_PAT")
> Sys.unsetenv("GITHUB_PAT")
> Sys.getenv("GITHUB_PAT")
## 载入了名字空间‘remotes’ 2.1.1,但需要的是>= 2.2.0
## 安装github上面的R包,不需要翻墙;安装时关闭翻墙,直接按照代码安装即可:
# install.packages("devtools")
# library(devtools)
# install_github("jasonleebrown/humboldt")
## 但也不一定,有时候也会需要翻墙才可以安装,可以作为一种尝试;
二进列运算符中有非数值参数
#按列执行类型转化
available_df <- apply(available_df, MARGIN=2, as.numeric)
#将结果由矩阵转化为data.frame
available_df <- as.data.frame(available_df)

1.9 内存管理命令

 memory.limit():查看内存大小

memory.limit(n):申请内存大小

memory.size(NA):查看内存大小

memory.size(T):查看已分配的内存

memory.size(F):查看已使用的内存

在Windows开始菜单运行:Rgui -max-mem-size 2GB

与在R GUI中执行:memory.limit(2000)

rm(x):从workplace中删除变量/文件x

gc():清除内存垃圾

rm(list=ls()):清除workplace中所有变量

results matching ""

    No results matching ""